package cn.cdeden.knowledge.utils;

import cn.cdeden.knowledge.domain.dto.FileFormatDto;
import cn.cdeden.knowledge.domain.dto.SysConfigDefaultEnums;
import cn.cdeden.knowledge.domain.dto.SysParametersConfigDto;
import cn.cdeden.knowledge.domain.enums.SysParametersConfigEnums;
import cn.cdeden.knowledge.service.SysParametersConfigService;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
@Slf4j
public class SysConfigUtils {

    private final SysParametersConfigService configService;




    /**
     * @Description // 获取文件格式配置
     * @param
     * @return com.cdyd.ecm.sys.domain.dto.FileFormatDto
     **/
    public FileFormatDto getFileFormatDto() {
        FileFormatDto fileFormatDto = new FileFormatDto();
        try {
            SysParametersConfigDto byConfigCodeAfter = this.getByConfigCodeAfter(SysConfigDefaultEnums.fileFormat.getConfigCode(), SysParametersConfigEnums.SYS_FILE_CONFIG);
            String configValue = byConfigCodeAfter.getConfigValue();
            fileFormatDto = JSONObject.parseObject(configValue, FileFormatDto.class);

        } catch (Exception e) {
        }
        return fileFormatDto;
    }


    /**
     * 根据配置代码和枚举类型获取系统参数配置信息。
     *
     * @param configCode 配置代码，对应于系统配置的唯一标识。
     * @param enums 枚举类型，用于指定需要获取的配置的具体类型。
     * @return 返回一个SysParametersConfigDto对象，包含指定配置代码和枚举类型对应的配置信息。
     */
    public SysParametersConfigDto getByConfigCodeAfter(String configCode, SysParametersConfigEnums enums) {
        SysParametersConfigDto byCode = getByConfigCodeAfter(configCode, enums, false);
        return byCode;
    }


    public SysParametersConfigDto getByConfigCodeAfter(String configCode, SysParametersConfigEnums enums,boolean mandatory) {
        SysParametersConfigDto byCode = configService.getByCode(configCode, enums.getCode(),mandatory);
        return byCode;
    }

}
